﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entidades;
using System.Data;
using System.Data.SqlClient;

namespace DAO
{
    public static class SalaDAO
    {
        public static int agregarSala(Sala sala)
        {
            string cmd = "INSERT INTO Sala (sal_descripcion, sal_ubicacion) VALUES (@descripcion, @ubicacion);";
            List<SqlParameter> listaParam = new List<SqlParameter>();
            listaParam.Add(new SqlParameter("@descripcion", sala.Descripcion));
            listaParam.Add(new SqlParameter("@ubicacion", sala.Ubicacion));
            int i = DB.EjecutarCommand(cmd, listaParam);
            return i;
        }

        public static void modificarSala(Sala sala)
        {
            string cmd = "UPDATE Sala SET sal_descripcion = @descripcion, sal_ubicacion = @ubicacion ";
            cmd += "WHERE sal_id = @id;";
            List<SqlParameter> listaParam = new List<SqlParameter>();
            listaParam.Add(new SqlParameter("@descripcion", sala.Descripcion));
            listaParam.Add(new SqlParameter("@ubicacion", sala.Ubicacion));
            listaParam.Add(new SqlParameter("@id", sala.Id));
            DB.EjecutarCommand(cmd, listaParam);
        }

        public static void bajaSala(int idSala)
        {
            string cmd = "UPDATE Sala SET sal_fecha_baja = GETDATE() ";
            cmd += "WHERE sal_id = @id;";
            List<SqlParameter> listaParam = new List<SqlParameter>();
            listaParam.Add(new SqlParameter("@id", idSala));
            DB.EjecutarCommand(cmd, listaParam);
        }

        public static Sala obtenerSalaId(int id)
        {
            string cmd = "SELECT sal_id, sal_descripcion, sal_ubicacion FROM Sala ";
            cmd += "WHERE sal_id = @id;";
            List<SqlParameter> listaParam = new List<SqlParameter>();
            listaParam.Add(new SqlParameter("@id", id));
            SqlDataReader dr = DB.GenerarReader(cmd, listaParam);
            Sala sala = new Sala();
            while (dr.Read())
            {
                sala.Id = int.Parse(dr["sal_id"].ToString());
                sala.Descripcion = dr["sal_descripcion"].ToString();
                sala.Ubicacion = dr["sal_ubicacion"].ToString();
            }
            return sala;
        }


        public static List<Sala> obtenerSala(string filtro)
        {
            string cmd = "SELECT sal_id, sal_descripcion, sal_ubicacion FROM Sala ";
            cmd += "WHERE sal_fecha_baja IS NULL";
            List<SqlParameter> listaParam = new List<SqlParameter>();
            if (!string.IsNullOrWhiteSpace(filtro))
            {
                cmd += " AND sal_descripcion LIKE  @descripcion";
                listaParam.Add(new SqlParameter("@descripcion", "%" + filtro + "%"));
            }
            SqlDataReader dr = DB.GenerarReader(cmd, listaParam);
            List<Sala> listaSala = new List<Sala>();
            while (dr.Read())
            {
                Sala sala = new Sala();
                sala.Id = int.Parse(dr["sal_id"].ToString());
                sala.Descripcion = dr["sal_descripcion"].ToString();
                sala.Ubicacion = dr["sal_ubicacion"].ToString();
                listaSala.Add(sala);
            }
            dr.Close();

            return listaSala;

        }
        public static List<Sala> obtenerSala()
        {
            string cmd = "SELECT sal_id, sal_descripcion, sal_ubicacion FROM Sala ";
            cmd += "WHERE sal_fecha_baja IS NULL";            
            SqlDataReader dr = DB.GenerarReader(cmd);
            List<Sala> listaSala = new List<Sala>();
            while (dr.Read())
            {
                Sala sala = new Sala();
                sala.Id = int.Parse(dr["sal_id"].ToString());
                sala.Descripcion = dr["sal_descripcion"].ToString();
                sala.Ubicacion = dr["sal_ubicacion"].ToString();
                listaSala.Add(sala);
            }
            dr.Close();

            return listaSala;

        }

    }
}
